package com.hmyd.hmyd_android.utils;

import java.util.regex.Pattern;

//常用正则表达式
public class RegPatterns {
	/**
	 * 邮箱验证
	 */
	public static Pattern EmailPattern = Pattern.compile("[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[a-zA-Z0-9](?:[\\w-]*[\\w])?");
	/**
	 * 手机号验证
	 */
	public static Pattern MobilePattern = Pattern.compile("^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$");
	/**
	 * 安全密码提示 日期验证
	 */
	public static Pattern DateAnswerPattern = Pattern.compile("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229)$");
	/**
	 * 安全密码提示 姓名地址提示
	 */
	public static Pattern NameAnswerPattern = Pattern.compile("^[\u4E00-\u9FA5]{2,19}|[a-zA-Z]{3,38}$");
	
	/**
	 * 正整数验证
	 */
	public static Pattern numberPattern = Pattern.compile("^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$");
	/**
	 * 验证地址
	 */
	public static Pattern AddressPattern = Pattern.compile("^[\u4E00-\u9FA5]{2,19}[\u4E00-\u9FA5a-zA-Z0-9]*$");
	
	
	/**
	 * 判断昵称长度，合法长度为4-15位
	 * 英文、数字为一个字符，中文为两个字符，英文标点为一个字符，中文标点为两个字符
	 * */
	public static boolean checkNicknameLength(String nickname) {
		int nameLength = 0;
		for(int i=0;i<nickname.length();i++){
			String charName = nickname.substring(i, i+1);
			//判断中文 [\u4e00-\u9fa5]
			//判断双字节字符 [^\\x00-\\xff]
			nameLength += charName.matches("[^\\x00-\\xff]") ? 2 : 1;
		}

		if(nameLength < 4 || nameLength > 15 ){
			return false;
		}
		return true;
	}
	
	/**
	 * 判断昵称合法性，即是否包含禁用符号
	 * 合法规则： 4-15位，支持中英文、数字、下划线(_)或减号(-)
	 * */
	public static boolean checkNicknameChars(String nickname) {
		//不能为纯数字
		if(nickname.matches("^[0-9]*$")){
			return false;
		}
		if(!nickname.matches("^[0-9a-zA-Z\u4e00-\u9fa5_-]*$")){
			//昵称不合法
			return false;
		}
		return true;
	}
}
